<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
namespace Agp\CoreBundle\Manager;

use Doctrine\ORM\EntityManager;
use Agp\CoreBundle\Entity\Terminal;
use Agp\CoreBundle\Manager\BaseManager;
use Agp\CoreBundle\Entity\HabilitaProdutoTerminal;
use Agp\CoreBundle\Entity\AutorizadorValidacao;
use Doctrine\ORM\Query;
use Agp\CoreBundle\Entity\ListaPreco;
/**
 * Description of HabilitaProdutoVendaManager
 *
 * @author bondcs
 */
class HabilitaProdutoVendaManager extends BaseManager{
    
    public function remove($entity) {
        
        if ($entity->getListaPreco()->getTipo() == ListaPreco::TP_PASSAPORTE){
            $this->repository->clearByLista($entity->getListaPreco());
        }
        
        parent::remove($entity);
    }
    

    public function habilitaProdutoVendaGrupo($produtos, $evento, $limpa)
    {   
    $user = $this->container->get('security.context')->getToken()->getUser();
            
    if ($limpa == true){
        $this->repository->clearProdutosHabilitadosByEvento($evento);
    }
    $i = 1;
        foreach ($produtos as $produto){
            $eventoProduto = $this->container->get("agp.eventoProduto.manager")->findById(substr($produto, 0, strpos($produto, '-')));

            $habilita = $this->create();
            $habilita->setEvento($evento)
                     ->setOrdem($this->repository->getLastOrdem($evento)+1);    
            $habilita->setListaPreco($eventoProduto->getListaPreco());
            $habilita->setProduto($eventoProduto->getProduto());
            $habilita->setVlrProduto($eventoProduto->getVlrProduto());
            $habilita->setLimiteVendas($eventoProduto->getLimiteVendas());
            $habilita->setEmpresa($user->getEmpresa());

            if ($limpa == false){
                $ordem = $this->repository->verificaProdutoEvento($eventoProduto->getProduto(), $evento);
              
                // Produto fica com a ordem do produto deletado
                if ($ordem != null){
                    $habilita->setOrdem($ordem);
                } 
            } 

            $i++;
            $this->persist($habilita);
        }
    }
    
    public function changeSituacao($entity){
        
        if ($entity->isAtivo()){
            $entity->setSituacao(\Agp\CoreBundle\Entity\HabilitaProdutoVenda::SIT_INATIVO);
        }else{
            $entity->setSituacao(\Agp\CoreBundle\Entity\HabilitaProdutoVenda::SIT_ATIVO);
        }
        
        $this->update($entity);
        
    }
    
     public function habilitaPassaporte($listas, $evento){
        
        $user = $this->container->get('security.context')->getToken()->getUser();
        
        foreach ($listas as $lista){

            $this->container->get('agp.habilitaProdutoVenda.repository')->clearByLista($lista);

            $produtos = $this->container->get('agp.eventoProduto.repository')->getProdutosByLista($lista);

            foreach ($produtos as $p){
                
                $evento = $p->getEvento();

                $habilita = $this->create();
                $habilita->setEvento($evento);
                $habilita->setOrdem($this->repository->getLastOrdem($evento)+1);    
                $habilita->setListaPreco($p->getListaPreco());
                $habilita->setProduto($p->getProduto());
                $habilita->setVlrProduto($p->getVlrProduto());
                $habilita->setLimiteVendas($p->getLimiteVendas());
                $habilita->setEmpresa($user->getEmpresa());
                $this->em->persist($habilita);
            }

        }

        $this->em->flush();

    }
    
     public function habilitaAmbiente($ambientes, $evento){
        
        $user = $this->container->get('security.context')->getToken()->getUser();
 
            foreach ($ambientes as $ambiente){
                
                $this->repository->clearByAmbiente($ambiente, $evento);
                
                //$listas = $this->container->get('agp.lista.repository')->getListasByAmbiente($ambiente);
                
                //foreach ($listas as $l){
                
                    $l = $ambiente->getSetores()->get(0);
                    $habilita = $this->create();
                    $habilita->setEvento($evento);
                    $habilita->setOrdem($this->repository->getLastOrdem($evento)+1);    
                    $habilita->setListaPreco($l);
                    //$habilita->setProduto($ambiente->getProduto());
                    //$habilita->setVlrProduto($ambiente->getProduto()->getVlrBase());
                    $habilita->setLimiteVendas(0);
                    $habilita->setEmpresa($user->getEmpresa());
                    $this->em->persist($habilita);
                    
                //}
                
            }
            
            $this->em->flush();

    }
        
    
//    public function addValidador($produto, $evento, $terminalEmpresa, $habilita){
//        
//        $maximoValid = $this->em->createQuery("SELECT MAX(av.codAutorizadorValidacao) FROM AgpCoreBundle:AutorizadorValidacao av")->getSingleScalarResult();
////        $stmt = $em->getConnection()->prepare("ALTER TABLE autorizador_validacao ALTER COLUMN cod_autorizador_Validacao AUTO INCREMENT = 1");
////        $stmt->execute();
////        
////        $stmt = $em->getConnection()->prepare("SHOW TABLE STATUS LIKE 'autorizador_validacao' ");
////        $stmt->execute();
////        $row = $stmt->fetch();
////        var_dump($row['Auto_increment']);
//        
//        //die();
//        
//        $auto = new AutorizadorValidacao;
//        $auto->setCodAutorizadorValidacao($maximoValid+1);
//        $auto->setEvento($evento);
//        $auto->setProduto($produto);
//        $auto->setTerminalEmpresa($terminalEmpresa);
//        $auto->setHabilita($habilita);
//        
//        
//        $this->em->persist($auto);
//        $this->em->flush();
//        
//        return $auto;
//    }
  
}

?>
